package Proyecto0.src.TDALista;

/**La Clase DNode es la clase encargada de almacenar el elemento de una posicion determinada a la cual implementara,
 * y de mantener una referencia al nodo correspondiente a la posicion anterior y al de la posicion siguiente
 * 
 * @author Graff Javier(99789)
 * @author Avodet Eric (97734)
 *
 * @param <E> tipo del elemento que almaceno
 */
public class DNode<E>  implements Position<E>
{
	//Referencia al nodo de la posicion anterior
	private DNode<E> prev;
	//Referencia al nodo de la posicion siguiente
	private DNode<E> sig;
	//Elemento almacenado por el nodo
	private E element;
	
	/**
	 * Constructor, inicializa el elemento y las referencias al anterior y al siguiente
	 * @param p referencia a nodo previo
	 * @param s referencia a nodo siguiente
	 * @param elem elemento que almaceno
	 */
	public DNode(DNode<E> p, DNode<E> s, E elem)
	{
		prev=p;
		sig=s;
		element=elem;
	}
	
	
	public E element() 
	{
		return element;
	}
	
	/**Retorna el nodo siguiente al actual
	 * @return referencia nodo de la posicion sigiuiente
	 */
	public DNode<E> getNext()
	{
		return sig;
	}
	
	
	/**Retorna el nodo anterior al actual
	 * 
	 * @return referencia al nodo de la posicion anterior
	 */
	public DNode<E> getPrev()
	{
		return prev;
	}
	
	
	/**
	 * Modifica el elemento del nodo
	 * @param e elemento nuevo
	 */
	public void setElement(E e)
	{
		element=e;
	}
	
	
	/**
	 * Establece una referencia al nodo de la posicion siguiente
	 * @param s referencia al nodo de la posicion siguiente
	 */
	public void setNext(DNode<E> s)
	{
		sig=s;
	}
	
	
	/**
	 * Establece una referencia al nodo de la posicion anterior
	 * @param p referencia al nodo de la posicion anterior
	 */
	public void setPrev(DNode<E> p)
	{
		prev=p;
	}

}